import { ElNotification } from 'element-plus'

// 奇门排盘API接口
import {
    paiPanApi // 开始排盘
} from '@/api/paipan/qimen-api.js'

export default {
    el: 'app',
    data() {
        return {

            // 选项
            options: {
                name: '', // 姓名
                occupy: '', // 占事
                date: '', // 日期
                leapMonth: 0, // 是否闰月（true:是。false:否）
                dateType: 0, // 日期类型
                sex: 1, // 性别
                qiMenType: 3, // 奇门类型
                jieQiSet: 1, // 节气排法
                zhiShiSet: 0, // 值使排法
                yearGanZhiSet: 2, // 年干支设置
                monthGanZhiSet: 1, // 月干支设置
                dayGanZhiSet: 0, // 日干支设置
                hourGanZhiSet: 0 // 时干支设置
            },
            sexOptions: [
                { value: 1, label: '男' },
                { value: 0, label: '女' }
            ],
            leapMonthOptions: [
                { value: 0, label: '非闰月' },
                { value: 1, label: '闰月' }
            ],
            dateTypeOptions: [
                { value: 0, label: '公历' },
                { value: 1, label: '农历' }
            ],
            qiMenTypeOptions: [
                { value: 0, label: '年家' },
                { value: 1, label: '月家' },
                { value: 2, label: '日家' },
                { value: 3, label: '时家' }
            ],
            jieQiSetOptions: [
                { value: 0, label: '按天计算' },
                { value: 1, label: '按分钟计算' }
            ],
            zhiShiSetOptions: [
                { value: 0, label: '一律用[死门]为值使' },
                { value: 1, label: '根据阴阳遁推算' },
                { value: 2, label: '根据节气推算' }
            ],
            renYuanTypeOptions: [
                { value: 0, label: '子平真诠法诀' },
                { value: 1, label: '渊海子平法诀' },
                { value: 2, label: '星平会海法诀' },
                { value: 3, label: '三命通会法诀' },
                { value: 4, label: '神峰通考法诀' },
                { value: 5, label: '万育吾之法诀' }
            ],
            yearGanZhiSetOptions: [
                { value: 0, label: '以正月初一作为新年的开始' },
                { value: 1, label: '以立春当天作为新年的开始' },
                { value: 2, label: '以立春交接时刻作为新年的开始' }
            ],
            monthGanZhiSetOptions: [
                { value: 0, label: '以节交接当天起算' },
                { value: 1, label: '以节交接时刻起算' }
            ],
            dayGanZhiSetOptions: [
                { value: 0, label: '晚子时日干支算当天' },
                { value: 1, label: '晚子时日干支算明天' }
            ],
            hourGanZhiSetOptions: [
                { value: 0, label: '支持早子时和晚子时' }
            ],


            // 数据
            data: {}, // 数据
            isData: false, // 数据状态（true:存在。false:不存在）
            dataPage: 1, // 数据显示界面（1:基础信息。2:更多信息）
            luoGong: 1, // 落宫
            houTianBaGuaGong: [4, 9, 2, 3, 5, 7, 8, 1, 6], // 后天八卦宫位
            houTianBaGuaGongName: ['巽四宫', '离九宫', '坤二宫', '震三宫', '中五宫', '兑七宫', '艮八宫', '坎一宫', '乾六宫'], // 后天八卦宫位名称
            houTianBaGuaGongName2: ['坎一宫', '坤二宫', '震三宫', '巽四宫', '中五宫', '乾六宫', '兑七宫', '艮八宫', '离九宫'], // 后天八卦宫位名称2
            jiuGongDiZhi: [['子'], ['未', '申'], ['卯'], ['辰', '巳'], [], ['戌', '亥'], ['酉'], ['丑', '寅'], ['午']], // 九宫地支
            jiuGongDiZhiLeft: ['', '未', '', '辰', '', '亥', '', '寅', ''], // 九宫地支（左侧）
            jiuGongDiZhiRight: ['子', '申', '卯', '巳', '', '戌', '酉', '丑', '午'], // 九宫地支（右侧）
            jiuGongXianTianShu: ['6', '8', '4', '5', '- -', '1', '2', '7', '3'], // 九宫中的先天数（1~9宫）
            jiuGongHouTianShu: ['1', '2', '3', '4', '- -', '6', '7', '8', '9'], // 九宫中的后天数（1~9宫）
            jiuGongWuXingShu: ['1、6', '5、10', '3、8', '3、8', '5、10', '4、9', '4、9', '5、10', '2、7'], // 九宫中的五行数（1~9宫）
            jiuGongZongShu: ['1、6', '2、5、8、10', '3、4、8', '3、4、5、8', '5、10', '1、4、6、9', '2、4、7、9', '5、7、8、10', '2、3、7、9'], // 九宫中的总数（1~9宫）
            keYingTab: '1', // 默认显示十干克应


            // 其他
            muColor: '#00ad00', // 五行木颜色
            huoColor: '#d40000', // 五行火颜色
            tuColor: '#b16400', // 五行土颜色
            jinColor: '#efa800', // 五行金颜色
            shuiColor: '#2e83f6' // 五行水颜色
        }
    },
    watch: {
    },
    created() {
        this.options.date = new Date();
    },
    mounted() {
        this.$refs.videoRef.addEventListener('ended', this.restartVideoMethod());
    },
    methods: {

        /**
         * 播放MP4
         */
        restartVideoMethod() {

            this.$refs.videoRef.currentTime = 0;
            this.$refs.videoRef.play();

        },

        /**
         * 开始排盘
         */
        paiPanMethod() {

            // 条件构造
            let query = this.options;

            // 发送请求
            paiPanApi(query).then((res) => {
                if (String(res.data.code) === '200' && null !== res.data.data) {
                    var data = res.data.data;

                    this.data = data; // 排盘数据

                    this.isData = true; // 数据状态（true:存在。false:不存在）

                }
            })

        },

        /**
         * 上下局
         * 
         * @param isShangXiaJu true:上一局。false:下一局
         */
        shangXiaJu(isShangXiaJu) {

            var date = new Date(this.data.solarDate);
            if (isShangXiaJu) {
                // 上一局
                this.options.date.setHours(date.getHours() - 2);
                this.paiPanMethod(); // 开始排盘
            } else {
                // 下一局
                this.options.date.setHours(date.getHours() + 2);
                this.paiPanMethod(); // 开始排盘
            }

        },

        /**
         * 点击九宫
         * 
         * @param luoGong 落宫
         */
        gongMethod(luoGong) {

            this.luoGong = luoGong;

        },

        /**
         * 返回排盘
         */
        fanHuiPaiPanMethod() {

            this.isData = false; // 数据状态（true:存在。false:不存在）
            this.dataPage = 1; // 数据显示界面（1:基础信息。2:更多信息）
            this.luoGong = 1; // 落宫
            this.keYingTab = '1'; // 默认显示十干克应

        },

        /**
         * 切换为基础信息
         */
        jiChuMethod() {

            this.dataPage = 1; // 数据显示界面（1:基础信息。2:更多信息）

        },

        /**
         * 切换为更多信息
         */
        gengDuoMethod() {

            this.dataPage = 2; // 数据显示界面（1:基础信息。2:更多信息）

        },

        /**
         * 后天八卦宫位名称颜色
         * 
         * @param name   九宫名称
         * @param index  九宫索引（1 ~ 9）
         */
        houTianBaGuaGongNameColorMethod(name, index) {

            if ('震三宫' === name || '巽四宫' === name) {
                return ('<font color=' + this.muColor + '">' + this.houTianBaGuaGongName[index - 1] + '</font>');
            }
            if ('离九宫' === name) {
                return ('<font color="' + this.huoColor + '">' + this.houTianBaGuaGongName[index - 1] + '</font>');
            }
            if ('坤二宫' === name || '中五宫' === name || '艮八宫' === name) {
                return ('<font color="' + this.tuColor + '">' + this.houTianBaGuaGongName[index - 1] + '</font>');
            }
            if ('乾六宫' === name || '兑七宫' === name) {
                return ('<font color="' + this.jinColor + '">' + this.houTianBaGuaGongName[index - 1] + '</font>');
            }
            if ('坎一宫' === name) {
                return ('<font color="' + this.shuiColor + '">' + this.houTianBaGuaGongName[index - 1] + '</font>');
            }

        },

        /**
         * 六仪击邢、三奇入墓、门迫颜色
         * 
         * @param data 数据
         * @param link 状态
         */
        xingMuPoLinkMethod(data, link) {

            if ('' === link) {
                return data;
            }
            if ('击邢' === link) {
                return ('<font color="#d30505"><b>' + data + '</b></font>');
            }
            if ('入墓' === link) {
                return ('<font color="#d3a12d"><b>' + data + '</b></font>');
            }
            if ('击邢入墓' === link) {
                return ('<font color="#4d89e4"><b>' + data + '</b></font>');
            }
            if ('门迫' === link) {
                return ('<font color="#9b4de4"><b>' + data + '</b></font>');
            }

        },

        /**
         * 通知提示（右上角弹出）
         * 
         * @param type 消息类型（success、warning、info、error）
         * @param duration 自动关闭延迟，0为不关闭（单位：毫秒）
         * @param title 标题
         * @param message 提示内容
         */
        notification(type, duration, title, message) {

            ElNotification({
                type: type,
                title: title,
                message: message,
                duration: duration,
                position: 'top-right',
                dangerouslyUseHTMLString: true
            })

        }

    }
}
